package com.zjsru.plan2023;

/**
 * @Author: cookLee
 * @Date: 2023-12-27
 * 保龄球游戏的获胜者
 * 如果玩家在该轮的前两轮的任何一轮中击中了 10 个瓶子，则为 2x 。
 * 否则，为 x 。
 * 如果玩家 1 的得分高于玩家 2 的得分，则为 1 ；
 * 如果玩家 2 的得分高于玩家 1 的得分，则为 2 ；
 */
public class IsWinner {

    /**
     * 主
     * \
     * 输入：player1 = [4,10,7,9], player2 = [6,5,2,3]
     * 输出：1
     * 解释：player1 的得分是 4 + 10 + 2*7 + 2*9 = 46 。
     * player2 的得分是 6 + 5 + 2 + 3 = 16 。
     * player1 的得分高于 player2 的得分，所以 play1 在比赛中获胜，答案为 1 。
     * \
     * 输入：player1 = [3,5,7,6], player2 = [8,10,10,2]
     * 输出：2
     * 解释：player1 的得分是 3 + 5 + 7 + 6 = 21 。
     * player2 的得分是 8 + 10 + 2*10 + 2*2 = 42 。
     * player2 的得分高于 player1 的得分，所以 play2 在比赛中获胜，答案为 2 。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        IsWinner isWinner = new IsWinner();
        int[] player1 = new int[]{4,10,7,9};
        int[] player2 = new int[]{6,5,2,3};
        System.out.println(isWinner.isWinner(player1, player2));
    }

    /**
     * 模拟
     *
     * @param player1 player1
     * @param player2 player2
     * @return int
     */
    public int isWinner(int[] player1, int[] player2) {
        int score1 = this.helper(player1);
        int score2 = this.helper(player2);
        return score1 == score2 ? 0 : score1 > score2 ? 1 : 2;
    }

    /**
     * 计算分数助手类
     *
     * @param player player
     * @return int
     */
    private int helper(int[] player) {
        int score = 0;
        for (int i = 0; i < player.length; i++) {
            if ((i > 0 && player[i - 1] == 10) || (i > 1 && player[i - 2] == 10)) {
                score += 2 * player[i];
            } else {
                score += player[i];
            }
        }
        return score;
    }
}
